gusucode.com > 《MATLAB图像与视频处理实用案例详解》代码 > 《MATLAB图像与视频处理实用案例详解》代码/第 21 章 路面裂缝检测识别系统设计/Process_Main.m

    function Result = Process_Main(I)
if ndims(I) == 3
    I1 = rgb2gray(I);
else
    I1 = I;
end
I2 = hist_con(I1);
I3 = med_process(I2);
I4 = adjgamma(I3, 2);
[bw, th] = IterProcess(I4);
bw = ~bw;
bwn1 = bw_filter(bw, 15);
bwn2 = Identify_Object(bwn1);
[projectr, projectc] = Project(bwn2);
[r, c] = size(bwn2);
bwn3 = Judge_Crack(bwn2, I4);
bwn4 = Bridge_Crack(bwn3);
[flag, rect] = Judge_Direction(bwn4);
if flag == 1
    str = '横向裂缝';
    wdmax = max(projectc);
    wdmin = min(projectc);
else
    str = '纵向裂缝';
    wdmax = max(projectr);
    wdmin = min(projectr);
end
Result.Image = I1; 
Result.hist = I2; 
Result.Medfilt = I3; 
Result.Enance = I4;
Result.Bw = bw; 
Result.BwFilter = bwn1; 
Result.CrackRec = bwn2;
Result.Projectr = projectr;
Result.Projectc = projectc;
Result.CrackJudge = bwn3;
Result.CrackBridge = bwn4; 
Result.str = str;
Result.rect = rect;
Result.BwEnd = bwn4; 
Result.BwArea = bwarea(bwn4); 
Result.BwLength = max(rect(3:4));
Result.BwWidthMax = wdmax; 
Result.BwWidthMin = wdmin; 
Result.BwTh = th;